// 路径形式的模块标识
// 路径形式的模块: ./  ../  /xxx(首位的/表示当前文件模块所属的磁盘的根路径)
require('./foo.js');

// 核心模块的本质也是文件
// 核心模块文件已经被编译到了二进制文件中了,我们只需要按照名字加载就可以了
require('fs');
require('http'); // 如果没报错,说明加载成功

// 第三方模块
// 凡是第三方模块都必须通过 npm 下载
// 使用的时候就可以通过 require('包名')的方式来进行加载才可以使用
// 不可能有任何一个第三方包和核心模块的名字是一样的
//    先找到当前文件所处目录中的node_modules目录
//    node_modules/art-template
//    node_modules/art-template/package.json文件
//    再找node_modules/art-template/package.json文件中的 main属性
//    main属性中记录了art-template的入口文件
//    然后加载使用这个第三方包
//    实际上最终加载的还是文件

// 若package.json文件不存在或者main指定的入口模块也没有
// 则node会自动找该目录下的index.js
// 也就是说 index.js 会作为一个默认备选项

// 若以上任何一个条件不成立,则会进入上一级目录中的node_modules目录中查找(规则如上)
// 如果上一级还没有,则继续往上上一级查找
// 知道找到根目录还没有,则报错
let template = require('art-template'); // 这个包是之前安装的

// 注意:我们一个项目有且只有一个 node_modules,不会出现多个
